/**
 * @Title: GlobalUtil.java
 * @Package pub.tbc.toolkit
 * @Description: TODO
 * @author tbc
 * @date 2016年8月4日 上午1:58:15
 * @version
 */
package pub.tbc.toolkit;

import com.google.common.base.Predicate;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;


/**
 * 提供一些通用工具-->传说中的上帝类。。。
 *
 * @author tbc
 * @version 1.0 create:{2016年8月4日 上午1:58:15}
 */
public final class GlobalUtil {
    @SuppressWarnings("unused")
    private static Logger log = LoggerFactory.getLogger(GlobalUtil.class);

    private GlobalUtil() {
        throw new AssertionError("No pub.tbc.toolkit.GlobalUtil instances for you!");
    }

    /**
     * 用于简化客户端应用条件表达式： 如果t不是empty，则返回t,否则返回d
     *
     * @author tbc
     * @version 1.0 create:{2016年8月4日 上午1:59:12}
     */
    public static <T> T judge(T t, T d) {
        return judge(t, d, new Predicate<T>() {
            @Override
            public boolean apply(T input) {
                return Objs.nonEmpty(input);
            }
        });
    }

    /**
     * 通用的条件表达式替代，如果谓语函数返回true,则返回t，否则d
     *
     * @author tbc
     * @version 1.0 create:{2016年8月4日 上午2:05:12}
     */
    public static <T> T judge(T t, T d, Predicate<T> predicte) {
        return predicte.apply(t) ? t : d;
    }
}
